package com.py.credit.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.py.credit.entity.Column;
import com.py.credit.entity.DynamicSqlEntity;
import com.py.credit.entity.ErrorData;
import com.py.credit.entity.Table;
import com.py.framework.core.common.Page;

public interface DataEntryDao {

	List<Column> getColunmList(@Param(value = "tableId") int tableId);

	List<Table> getTableList(@Param(value = "code") String code, @Param(value = "deptOid") int deptOid);

	List<ErrorData> getErrorDataListForTableId(@Param(value = "tableId") int tableId,
			@Param(value = "dataId") int dataId);

	int updataData(@Param(value = "sql") String sql);

	List<Map<String, Object>> getTableListForPage(@Param(value = "tableName") String tableName,
			@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "page") Page page, @Param(value = "deptId") Long deptId);

	void updataErrorData(@Param(value = "tableId") int tableId, @Param(value = "dataId") int dataId,
			@Param(value = "status") String status);

	List<Map<String, Object>> selectListData(@Param(value = "sql") String sql);

	String selectStringData(@Param(value = "sql") String sql);

	Integer addData(DynamicSqlEntity entity);

	/**
	 * 
	 *
	 * @Function 创建临时表
	 * @FileName DataEntryDao.java
	 * @MethodName createTempTable
	 * @param tableName
	 *            表名
	 * @param columns
	 *            列字段
	 * @Date 2018年8月21日 上午10:09:02
	 * @Author Min DongXv
	 *
	 */
	void createTempTable(@Param(value = "sql") String sql);

	/**
	 * 
	 *
	 * @Function 更新临时表中重复数据的状态为S
	 * @FileName DataEntryDao.java
	 * @MethodName updateStatus
	 * @param tableRes
	 *            源表
	 * @param tableDes
	 *            目标表
	 * @Date 2018年8月21日 上午10:09:31
	 * @Author Min DongXv
	 *
	 */
	void updateTempTableData(@Param(value = "tableRes") String tableRes, @Param(value = "tableDes") String tableDes);

	/**
	 * 
	 *
	 * @Function 删除临时表
	 * @FileName DataEntryDao.java
	 * @MethodName dropTempTable
	 * @param tableName
	 *            表名
	 * @Date 2018年8月21日 上午10:12:21
	 * @Author Min DongXv
	 *
	 */
	void dropTempTable(@Param(value = "tableName") String tableName);

	/**
	 * 
	 * @Function 查询临时表重复数据
	 * @FileName DataEntryDao.java
	 * @MethodName countDataNum
	 * @param tableName
	 *            表名
	 * @return
	 * @Date 2018年8月21日 上午10:50:58
	 * @Author Min DongXv
	 *
	 */
	int countDataNum(@Param(value = "tableName") String tableName, @Param(value = "status") String status);

	/**
	 *
	 * @Function 数据拷贝
	 * @FileName DataEntryDao.java
	 * @MethodName copyData
	 * @param tableRes
	 *            源表
	 * @param tableDes
	 *            目标表
	 * @param columns
	 *            字段列
	 * @Date 2018年8月21日 上午11:13:32
	 * @Author Min DongXv
	 *
	 */
	void copyData(@Param(value = "sql") String sql);

	/**
	 *
	 * @Function 清空内存表数据
	 * @FileName DataEntryDao.java
	 * @MethodName clearTable
	 * @param tableName
	 *            表名
	 * @Date 2018年8月21日 下午1:43:31
	 * @Author Min DongXv
	 *
	 */
	void clearTable(@Param(value = "tableName") String tableName);

	void deleteErrData(@Param(value = "taskId")String taskId, @Param(value = "tableName")String tablename);
}
